package top.ajunnihao.core.task;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

/**
 * TODO 任务执行者
 *
 * @author AJun
 * @version 1.0.0
 * @date 2020/5/31
 */
@Component
public class BootTasksExecutor {

    /**
     * 任务管理器
     */
    @Autowired
    DailyTaskManager taskManager;

    /**
     * 帖子删除任务
     */
    @Autowired
    Task msgDelTask;

    /**
     * 临时文件清理任务
     */
    @Autowired
    Task tmpFileClearTask;

    /**
     * 用户权利恢复任务
     */
    @Autowired
    Task userAbilityRestoreTask;

    /**
     * 每天凌晨十二点执行任务
     */
    @PostConstruct // 启动就执行一次
    @Scheduled(cron = "0 0 0 * * ?")
    public void execute() {
        taskManager.addTask(tmpFileClearTask, "临时目录文件清理任务(/tmp目录)");
        taskManager.addTask(msgDelTask, "清理待删除帖子(message表)");
        taskManager.addTask(userAbilityRestoreTask, "用户权利恢复任务(user_ability表)");

        // 启动任务线程
        taskManager.doStart();
    }

}
